iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
AI & Data

深度學習概念和應用(PyTorch)系列 第 7

Day7 One-hot編碼、ASCII code、文本編碼

  • 分享至 

  • xImage
  •  

One-hot

One-hot編碼在機器學習中可以用來表示位元組或是向量,這樣的位元組只有其中一項可以是1,所以被稱為One-hot中文為獨熱,如此可以幫助現實資料轉換成數字替代,相較於其他方式比較數字大笑,這種方法更適合用在資料是以距離來劃分的。One-hot用在離散型資料亦或者是小數可以省略時(類別或計數的資料)會相對方便,因為One-hot編碼沒有順序或是距離的概念。

ASCII code

ASCII的全名是American Standard Code for Information Interchange(美國資訊交換標準代碼),最初總共有七個位元,可以表達128個字元。而之後因為歐洲國家的語言很多並不是使用純英文表示,所以才多加了一個位元,
使ASCII code可以表達256個字元。在我們一般撰寫程式碼時,也會用到ASCII code轉換。

文本編碼

處理英文文本不會有問題,我們仍然可以對於文本做出一些前處理,這樣可以減少編碼種類,也可以刪除標點符號、數字或是其他不重要的字元,但要這些處理可能會影響模型訓練的表現,但影響程度取決於不同的任務類型。

實作(非完整程式碼):

import numpy as np
import torch

先import需要用到的numpy和torch
載入文檔命名為text

words = text.split('\n') 
line = words[100]
line

將每列的文字存入串列words取出第100列

t = torch.zeros(len(line), 128) #(文字字元數,ASCII code字元數) 

創建一個張量初始化為零

punctuation = '.,;:"!?”“_-'   #定義標點符號
    list = input_str.lower().replace('\n',' ').split() #以空白進行分割
    list = [word.strip(punctuation) for word in list]
    return list

此時會將一句話切割成一個個的單字

for i, word in enumerate(words_ line):
    index = wordindex[word]  #one-hot編碼
    words [i][index] = 1
    print('{:2} {:4} {}'.format(i, index, word))
print(words.shape)

輸出結果
torch.Size([句子單字數量,相異單字數])


上一篇
Day6 連續數值、有序數值、類別數值
下一篇
DAY8 詞嵌入法
系列文
深度學習概念和應用(PyTorch)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言